const { h } = window.Vue

// const MyTitle = {
//   setup (props, context) {
//     console.log(props) // Proxy {}
//     console.log(context)
//     return () => {
//       return h('h2', {}, 'hello world')
//     }
//   }
// }

// 
// const MyTitle = {
//   props: ['msg'],
//   setup (props, context) {
//     console.log(props) // 先定义props，Proxy { msg: '你好' }， 否则不知道具体的值是什么
//     console.log(context)

//     // 可以针对传递过来的msg的值做进一步处理 
//     return () => {
//       return h('h2', {}, 'hello world')
//     }
//   }
// }

// const MyTitle = {
//   props: ['msg'],
//   setup (props, context) {
//     console.log(context) // attrs  emit slots
//     console.log(context.attrs) // Proxy {} // 如果用户自定义props,那么为空
//     console.log(context.emit) // () => {}
//     console.log(context.slots) // undefined
//     // this 在 setup() 中不可用。由于 setup() 在解析 2.x 选项前被调用，
//     // setup() 中的 this 将与 2.x 选项中的 this 完全不同。同时在 setup() 和 
//     // 2.x 选项中使用 this 时将造成混乱。
//     // 可以针对传递过来的msg的值做进一步处理 
//     console.log(this) // undefined
//     return () => {
//       return h('h2', {}, 'hello world')
//     }
//   }
// }
const MyTitle = {
  // props: ['msg'],
  setup (props, context) {
    console.log(context) // attrs  emit slots
    console.log(context.attrs) // Proxy { msg: '你好' } // 如果用户不自定义props,那么为传输过来的默认值
    console.log(context.emit) // () => {}
    console.log(context.slots) // undefined
   
    console.log(this) // undefined
    return () => {
      return h('h2', {}, 'hello world')
    }
  }
}

export default MyTitle